<?php

namespace app;

use think\Response;
use think\facade\Request;

class APIResponse {
    // 定义常用的状态码
    const CODE_SUCCESS = 200;
    const CODE_ERROR = 400;

    /**
     * 创建成功响应
     * @param mixed $data 响应数据
     * @param string $msg 响应消息
     * @return Response
     */
    public static function success($data = null, $msg = 'success') {
        return Response::create([
            'code' => self::CODE_SUCCESS,
            'msg'  => $msg,
            'data' => $data
        ], 'json');
    }

    /**
     * 创建错误响应
     * @param string $msg 错误消息
     * @param int $code 错误码
     * @param mixed $data 错误数据
     * @return Response
     */
    public static function error($msg = 'error', $code = self::CODE_ERROR) {
        return Response::create([
            'code' => $code,
            'msg'  => $msg,
            'time' => date('Y-m-d H:i:s'),
            'url'  => Request::pathinfo()
        ], 'json');
    }

    /**
     * 创建文件下载响应
     * @param string $file 文件路径
     * @param string $name 下载文件名
     * @param bool $delete 下载后是否删除文件
     * @return Response
     */
    public static function download($file, $name = '', $delete = false) {
        return Response::create()->file($file, $name, $delete);
    }
}